/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package suministros.ejb30.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import suministros.ejb30.entity.Almacen;
import suministros.ejb30.entity.DetalleMovimiento;
import suministros.ejb30.entity.Empresa;
import suministros.ejb30.entity.Orden;
import suministros.ejb30.entity.Pedido;
import suministros.ejb30.entity.SubAlmacen;
import suministros.ejb30.entity.Tipo;
import suministros.ejb30.entity.Transferencia;
import suministros.ejb30.entity.Zona;

/**
 *
 * @author Diana
 */
@Entity
@Table(name = "Movimiento")
@NamedQueries({
    @NamedQuery(name = "Movimiento.findAll", query = "SELECT m FROM Movimiento m"),
    @NamedQuery(name = "Movimiento.findByIdMovimiento", query = "SELECT m FROM Movimiento m WHERE m.idMovimiento = :idMovimiento"),
    @NamedQuery(name = "Movimiento.findByFecha", query = "SELECT m FROM Movimiento m WHERE m.fecha = :fecha"),
    @NamedQuery(name = "Movimiento.findByAlmacenOrigen", query = "SELECT m FROM Movimiento m WHERE m.almacenOrigen = :almacenOrigen"),
    @NamedQuery(name = "Movimiento.findByAlmacenDestino", query = "SELECT m FROM Movimiento m WHERE m.almacenDestino = :almacenDestino"),
    @NamedQuery(name = "Movimiento.findByNroDevolucion", query = "SELECT m FROM Movimiento m WHERE m.nroDevolucion = :nroDevolucion"),
    @NamedQuery(name = "Movimiento.findByAnio", query = "SELECT m FROM Movimiento m WHERE m.anio = :anio"),
    @NamedQuery(name = "Movimiento.findByMes", query = "SELECT m FROM Movimiento m WHERE m.mes = :mes")})
public class Movimiento implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "id_movimiento")
    private String idMovimiento;
    @Column(name = "serie")
    private String serie;
     @Column(name = "numero")
    private String numero;
    @Column(name = "fecha")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecha;
    @Column(name = "almacenOrigen")
    private Integer almacenOrigen;
    @Column(name = "almacenDestino")
    private Integer almacenDestino;
    @Column(name = "nro_devolucion")
    private String nroDevolucion;
    @Column(name = "anio")
    private String anio;
    @Column(name = "mes")
    private String mes;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "movimiento")
    private List<DetalleMovimiento> detalleMovimientoList;
    @JoinColumn(name = "id_almacen", referencedColumnName = "id_almacen")
    @ManyToOne
    private Almacen idAlmacen;
    @JoinColumn(name = "nroOrden", referencedColumnName = "nro_orden")
    @ManyToOne
    private Orden nroOrden;
    @JoinColumn(name = "idtransferencia", referencedColumnName = "idTransferencia")
    @ManyToOne
    private Transferencia idTransferencia;
    @JoinColumn(name = "Cod_Pedido", referencedColumnName = "Cod_Pedido")
    @ManyToOne
    private Pedido codPedido;
    @JoinColumn(name = "id_subalmacen", referencedColumnName = "id_SubAlmacen")
    @ManyToOne
    private SubAlmacen idSubalmacen;
    @JoinColumn(name = "tipo_documento", referencedColumnName = "id_tabla_tipo")
    @ManyToOne
    private Tipo tipoDocumento;
    @JoinColumn(name = "tipo_Ingreso", referencedColumnName = "id_tabla_tipo")
    @ManyToOne
    private Tipo tipoIngreso;
    @JoinColumn(name = "tipo_movimiento", referencedColumnName = "id_tabla_tipo")
    @ManyToOne
    private Tipo tipoMovimiento;
    @JoinColumn(name = "id_zona", referencedColumnName = "id_zona")
    @ManyToOne
    private Zona idZona;
    @Column(name = "observacion")
    private String observacion;
    @Column(name = "usuario")
    private String usuario;
    @Column(name = "mac")
    private String mac;
    @JoinColumn(name = "id_empresa", referencedColumnName = "id_empresa")
    @ManyToOne(optional = false)
    private Empresa empresa;
    @Column(name = "fecha_operacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaOperacion;
    @Column(name = "ruc")
    private String proveedor;
    @Column(name = "cosechador")
    private String cosechador;
    @Column(name = "destino_produccion")
    private boolean isProduccion;

    public Movimiento() {
    }

    public Movimiento(String idMovimiento) {
        this.idMovimiento = idMovimiento;
    }

    public Empresa getEmpresa() {
        return empresa;
    }

    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }

   

    public String getMac() {
        return mac;
    }

    public void setMac(String mac) {
        this.mac = mac;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getObservacion() {
        return observacion;
    }

    public void setObservacion(String observacion) {
        this.observacion = observacion;
    }

    public String getIdMovimiento() {
        return idMovimiento;
    }

    public void setIdMovimiento(String idMovimiento) {
        this.idMovimiento = idMovimiento;
    }

    public Transferencia getIdTransferencia() {
        return idTransferencia;
    }

    public void setIdTransferencia(Transferencia idTransferencia) {
        this.idTransferencia = idTransferencia;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public String getProveedor() {
        return proveedor;
    }

    public void setProveedor(String proveedor) {
        this.proveedor = proveedor;
    }

    public String getSerie() {
        return serie;
    }

    public void setSerie(String serie) {
        this.serie = serie;
    }



    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public Integer getAlmacenOrigen() {
        return almacenOrigen;
    }

    public void setAlmacenOrigen(Integer almacenOrigen) {
        this.almacenOrigen = almacenOrigen;
    }

    public Integer getAlmacenDestino() {
        return almacenDestino;
    }

    public void setAlmacenDestino(Integer almacenDestino) {
        this.almacenDestino = almacenDestino;
    }

    public String getNroDevolucion() {
        return nroDevolucion;
    }

    public void setNroDevolucion(String nroDevolucion) {
        this.nroDevolucion = nroDevolucion;
    }

    public String getAnio() {
        return anio;
    }

    public void setAnio(String anio) {
        this.anio = anio;
    }

    public String getMes() {
        return mes;
    }

    public void setMes(String mes) {
        this.mes = mes;
    }

    public List<DetalleMovimiento> getDetalleMovimientoList() {
        return detalleMovimientoList;
    }

    public void setDetalleMovimientoList(List<DetalleMovimiento> detalleMovimientoList) {
        this.detalleMovimientoList = detalleMovimientoList;
    }

    public Almacen getIdAlmacen() {
        return idAlmacen;
    }

    public void setIdAlmacen(Almacen idAlmacen) {
        this.idAlmacen = idAlmacen;
    }

    public Orden getNroOrden() {
        return nroOrden;
    }

    public void setNroOrden(Orden nroOrden) {
        this.nroOrden = nroOrden;
    }

    public Pedido getCodPedido() {
        return codPedido;
    }

    public void setCodPedido(Pedido codPedido) {
        this.codPedido = codPedido;
    }

    public SubAlmacen getIdSubalmacen() {
        return idSubalmacen;
    }

    public void setIdSubalmacen(SubAlmacen idSubalmacen) {
        this.idSubalmacen = idSubalmacen;
    }

    public Tipo getTipoDocumento() {
        return tipoDocumento;
    }

    public void setTipoDocumento(Tipo tipoDocumento) {
        this.tipoDocumento = tipoDocumento;
    }

    public Tipo getTipoIngreso() {
        return tipoIngreso;
    }

    public void setTipoIngreso(Tipo tipoIngreso) {
        this.tipoIngreso = tipoIngreso;
    }

    public Tipo getTipoMovimiento() {
        return tipoMovimiento;
    }

    public void setTipoMovimiento(Tipo tipoMovimiento) {
        this.tipoMovimiento = tipoMovimiento;
    }

    public Zona getIdZona() {
        return idZona;
    }

    public void setIdZona(Zona idZona) {
        this.idZona = idZona;
    }

    public Date getFechaOperacion() {
        return fechaOperacion;
    }

    public void setFechaOperacion(Date fechaOperacion) {
        this.fechaOperacion = fechaOperacion;
    }

    public String getCosechador() {
        return cosechador;
    }

    public void setCosechador(String cosechador) {
        this.cosechador = cosechador;
    }

    public boolean isIsProduccion() {
        return isProduccion;
    }

    public void setIsProduccion(boolean isProduccion) {
        this.isProduccion = isProduccion;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idMovimiento != null ? idMovimiento.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {

        if (!(object instanceof Movimiento)) {
            return false;
        }
        Movimiento other = (Movimiento) object;
        if ((this.idMovimiento == null && other.idMovimiento != null) || (this.idMovimiento != null && !this.idMovimiento.equals(other.idMovimiento))) {
            return false;
        }
        return true;
    }


    @Override
    public String toString() {
        return "suministros.ejb30.entity.Movimiento[idMovimiento=" + idMovimiento + "]";
    }

}
